//这里是主函数，程序的入口
import java.util.Scanner;

public class Main {
    private static Scanner input = new Scanner(System.in);
    private static Player[] players = new Player[100]; // 最多支持100个玩家
    private static int count = 0; // 当前玩家数量
    private static Player user = null;
    
    public static void main(String[] args) {
        System.out.println("欢迎来到宠物养成游戏！");          
        while (true) {
            showMenu();
            int choice = readInt();
              if (choice == 1) { // 玩家登录
                login();
            } else if (choice == 2) { // 玩家注册
                register();
            } else if (choice == 3) { // 退出游戏
                System.out.println("感谢使用，再见！");
                break;
            } else {
                System.out.println("无效的选择，请重新输入！");
            }        }
        
        input.close();
    }
      // 显示主菜单
    private static void showMenu() {
        System.out.println("1. 玩家登录");
        System.out.println("2. 玩家注册");
        System.out.println("3. 退出游戏");
        System.out.print("请输入选择：");
    }
      // 玩家注册
    private static void register() {
        System.out.print("请输入用户名：");
        String username = input.next();
        System.out.print("请输入密码：");
        String password = input.next();
        
        Player newPlayer = new Player(username, password);
        players[count++] = newPlayer;
        System.out.println("注册成功！现在可以登录了。");
    }
    
    // 玩家登录
    private static void login() {
        System.out.print("请输入用户名：");
        String username = input.next();
        System.out.print("请输入密码：");
        String password = input.next();
        
        boolean found = false;
        for (int i = 0; i < count; i++) {
            Player player = players[i];
            if (player.login(username, password)) {
                user = player;
                found = true;
                System.out.println("登录成功！欢迎回来，" + player.getUsername());
                userMenu();
                break;
            }
        }
        
        if (!found) {
            System.out.println("用户名或密码错误，或用户不存在。");
        }
    }      // 玩家菜单
    private static void userMenu() {
        boolean active = true;
        
        while (active) {
            System.out.println("1. 开始游戏");
            System.out.println("2. 查看宠物状态");
            System.out.println("3. 抽取宠物");
            System.out.println("4. 放生宠物");
            System.out.println("5. 睡觉");
            System.out.println("6. 签到");
            System.out.println("7. 查看所有宠物");
            System.out.println("8. 宠物互动");
            System.out.println("9. 返回主菜单");
            System.out.print("请输入选择：");
              int choice = readInt();
            
            if (choice == 1) { // 开始游戏
                start();
            } else if (choice == 2) { // 查看宠物状态
                user.showAllPets();
            } else if (choice == 3) { // 抽取宠物
                user.drawPet();
            } else if (choice == 4) { // 放生宠物
                releasePet();
            } else if (choice == 5) { // 睡觉
                user.sleep();
            } else if (choice == 6) { // 签到
                user.signIn();
            } else if (choice == 7) { // 查看所有宠物
                user.showAllPets();
            } else if (choice == 8) { // 宠物互动
                interact();
            } else if (choice == 9) { // 返回主菜单
                active = false;
                user = null;
            } else {
                System.out.println("无效的选择，请重新输入！");
            }
        }
    }
      // 选择宠物放生
    private static void releasePet() {
        if (user.getPetCount() == 0) {
            System.out.println("你还没有领养任何宠物！");
            return;
        }
        
        // 显示所有宠物
        user.showAllPets();
          // 选择宠物
        System.out.println("\n请选择要放生的宠物编号（1-" + user.getPetCount() + "）：");
        int petIndex = readInt() - 1; // 用户输入是从1开始，但索引是从0开始
        
        if (petIndex >= 0 && petIndex < user.getPetCount()) {
            // 获取要放生的宠物名称
            String petName = user.getPetByIndex(petIndex).getName();
            // 使用新方法通过名称放生宠物
            user.releasePetByName(petName);
        } else {
            System.out.println("无效的宠物编号！");
        }
    }
      // 选择宠物互动菜单
    private static void interact() {
        if (user.getPetCount() == 0) {
            System.out.println("你还没有领养任何宠物！");
            return;
        }
        
        // 显示所有宠物
        user.showAllPets();
        
        // 选择宠物
        System.out.println("\n请选择要互动的宠物编号（1-" + user.getPetCount() + "）：");
        int petIndex = readInt() - 1; // 用户输入是从1开始，但索引是从0开始
          if (petIndex >= 0 && petIndex < user.getPetCount()) {
            // 获取要互动的宠物名称
            String petName = user.getPetByIndex(petIndex).getName();
            
            // 显示互动选项
            user.interactWithPetByIndex(petIndex);
            
            // 获取互动类型
            int interactionType = readInt();
            
            // 使用新方法通过名称与宠物互动
            user.performInteractionByName(petName, interactionType);
        } else {
            System.out.println("无效的宠物编号！");
        }    }
      // 开始游戏，选择宠物
    private static void start() {
        if (user == null) {
            System.out.println("请先登录或注册！");
            return;
        }
        
        if (user.getPetCount() >= 3) {
            System.out.println("你已经领养了三个宠物，不能再领养更多宠物了！");
            return;
        }
        
        System.out.println("初始角色只有派蒙哦");
        System.out.println("提示：你也可以通过抽取宠物功能获得更稀有的角色！");
        
        // 直接领养派蒙
        Pet pet = new Paimeng("派蒙");
        user.startGame(pet);
        System.out.println("你已获得初始宠物：派蒙。好好照顾它吧！");
    }
      // 获取整数输入
    private static int readInt() {
        while (!input.hasNextInt()) {
            System.out.println("请输入有效的数字！");
            input.next(); // 清除无效输入
        }
        return input.nextInt();
    }
}